package com.ctshk.rpc.season.service;

import com.ctshk.rpc.season.dto.PackageProductCostDTO;
import com.ctshk.rpc.season.dto.SeasonFixedProductPackageLocalFunDTO;
import com.ctshk.rpc.season.req.SeasonFixedProductPackageLocalFunReq;
import com.ctshk.rpc.season.req.UpdatePackageProductReq;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 套票-固定套票单项产品打包-当地玩乐表 服务类
 * </p>
 *
 * @author 杨林
 * @since 2021-03-09
 */
public interface ISeasonFixedProductPackageLocalFunService {
    /* @MethodName: 获取本地玩乐产品价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/26 16:47
     **/
    PackageProductCostDTO getLocalFunProductPrice(Long productId, LocalDate departureDate, Long userId, Integer channelType, Long attrId1, Long attrId2);

    /* @MethodName: 固定套票默认当地玩乐的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/19 13:32
     **/
    BigDecimal getDefaultLocalFunPrice(Long packageId, LocalDate queryDate, Long userId, Integer channelType);

    List<SeasonFixedProductPackageLocalFunDTO> getLocalFunByPackageId(Long packageId, LocalDate queryDate, Long userId, Integer channelType);
    List<SeasonFixedProductPackageLocalFunDTO> getDefaultLocalFunData(Long packageId, LocalDate queryDate, Long userId, Integer channelType);

    /* @MethodName: 批量保存 当地玩乐产品信息
     * @Description: TODO
     * @Param: userId 用户id  productId 产品id packageId 打包id  localFunList 当地玩乐集合
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/9 18:27
     **/
    void batchLocalFunProduct(Long userId, Long packageId, List<SeasonFixedProductPackageLocalFunReq> localFunList);

    /* @MethodName: 获取固定套票 当地玩乐信息
     * @Description: TODO
     * @Param: fixedSeasonId 固定套票id   packageId 产品打包id
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/11 13:40
     **/
    List<SeasonFixedProductPackageLocalFunDTO> getSeasonFixedProductLocalFunDtoList(Long packageId);

    /* @MethodName: 删除原来的景点票产品
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/12 16:26
     **/
    void deletePreviousLocalFun(Long id, Long packageId);

    /* @MethodName: 获取当地玩乐的成本差价
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/23 13:49
     **/
    List<SeasonFixedProductPackageLocalFunDTO> getLocalFunDifferencePrice(UpdatePackageProductReq req);
}
